package com.lsj.securityconfig.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    /*spring security强制要求注入一个PasswordEncoder
    * 该类共有三个实现方法
    * 1.encode进行密码加密
    * 2.matches实现密码匹配
    * 3.upgradeEncoding密码进行二次加密操作，很少使用
    *
    * NoOpPasswordEncoder为无加密方式密码编译器，已不被推荐使用，此处只作测试使用
    * */
    @Bean
    public PasswordEncoder passwordEncoder(){
        return NoOpPasswordEncoder.getInstance();
    }


    /*定义用户认证的方式
    * 1.此处使用在内存定义用户的方法，配置包括用户名、密码和角色
    * 2.使用配置类进行配置，会覆盖在配置文件中的用户信息*/
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("lsj")
                .password("123456")
                .roles("admin");

    }
}
